package siscom.modelos.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.naming.spi.DirStateFactory.Result;
import siscom.database.GerenciadorConexoes;
import siscom.modelos.Comanda;

/**
 *
 * @author Carlos Ribeiro
 */
public class ComandaDAO implements DAO<Comanda> {
    private GerenciadorConexoes conexao = new GerenciadorConexoes();
    private PreparedStatement pstmt;
    @Override
    public void salvar(Comanda instancia) throws SQLException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void atualizar(Comanda instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void salvarOuAtualizar(Comanda instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void excluir(Comanda instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public boolean existe(Comanda instancia) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public Comanda selecionar(Comanda instancia) throws SQLException{
        String query = "SELECT * FROM comandas WHERE numero = ?";
        pstmt = conexao.getConnection().prepareStatement(query);
        pstmt.setInt(1, instancia.getNumero());
        Comanda comanda = new Comanda();
        ResultSet rs = pstmt.executeQuery();
        if(rs.next()) {
            comanda.setAberta(true);
            comanda.setCliente(rs.getString("cliente"));
            comanda.setNumero(instancia.getNumero());
        }
        return comanda;
        
    }

    @Override
    public List<Comanda> selecionarTodos() throws SQLException {
        String query = "SELECT * FROM comandas";
        List<Comanda> lista = new ArrayList<Comanda>();
        pstmt = conexao.getConnection().prepareStatement(query);
        ResultSet rs = pstmt.executeQuery();
        while(rs.next()) {
            Comanda comanda = new Comanda();
            comanda.setAberta(true);
            comanda.setCliente(rs.getString("cliente"));
            comanda.setNumero(rs.getInt("numero"));
            lista.add(comanda);
        }
        return lista;
    }

    public void refreshComanda(Comanda comanda) throws SQLException{
        Comanda newComanda = selecionar(comanda);
        if (newComanda == null) {
            comanda.setAberta(false);
            comanda.setCliente("");
            return;
        }
        comanda.setAberta(true);
        comanda.setCliente(newComanda.getCliente());
    }
}
